Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
Курсова Робота
з предмету «Системне програмне забезпечення»
на тему «Розробка профайлера для ОС Windows»
АНОТАЦІЯ
Метою даної курсової роботи є дослідження методів профілювання і створення профайлера для для операційної системи Windows, що аналізує роботу процесів в ОП. Даний профайлер призначений для статистичного збору інформації про під час виконання процесу.
Також в даній роботі розглянуті питання вибору оптимального методу профілювання і обґрунтування методу використаного в даній роботі.
Проведене тестування роботи програми і отримано звіт про роботу процесів локального комп’ютера.
ЗМІСТ
ВСТУП 4
1. Огляд поставленої задачі 5
1.1 Аналіз важливості використання профайлерів 5
1.2 Аналіз існуючих методів та засобів профілювання 5
1.3 Поняття процесів та потоків 6
2. Аналіз завдання 7
2.1 Вибір мови програмування та середовища розробки 7
2.2 Вибір та розробка структур даних 7
2.3 Функції Win API та функції користувача 9
3. Розробка компонент програмної реалізації 11
3.1 Опис алгоритму роботи програми 11
3.2 Розробка інтерфейсу користувача 15
4. Використання профайлера 18
4.1 Інсрукції користувача 18
4.2 Результати тестування 18
ВИСНОВКИ 20
СПИСОК ЛІТЕРАТУРИ 21
ДОДАТОК 1 Завдання на проектування 22
ДОДАТОК 2 Схема загальної структури програми 23
ДОДАТОК 3 Код програми 24
ВСТУП
Профілювання є важливим для ефективної розробки програмних продуктів. Головною метою профілювання (аналізу продуктивності) - визначити які частини програми оптимізувати, для покращення використання пам'яті або швидкодії. Профілювання є джерелом інформації про функціонування процесів операційної системи і розподіл ресурсів комп’ютера між процесами. Використання профайлерів життєво необхідне в процесі планування продуктивності.
Інструменти програмного аналізу критично важливі для розуміння поведінки програми. Комп'ютерним архітекторам потрібні такі інструменти, щоб оцінити, як програми виконуватимуться на новій архітектурі. Авторам програмного забезпечення потрібні інструменти, аби проаналізувати їх програми і ідентифікувати критичні частини коду. Автори компіляторів часто використовують такі інструменти, аби з'ясувати, як добре виконується їх планування інструкцій або алгоритм передбачення, що відлагоджується.
1. Огляд поставленої задачі
1.1 Аналіз важливості використання профайлерів
Аналіз продуктивності, або профілювання при розробці програмного забезпечення це – дослідження поведінки програми, використовуючи інформацію, зібрану в результаті дії програми (тобто форма динамічного аналізу програми, в протилежність статичному аналізу коду). Звичайна мета аналізу продуктивності - визначити які частини програми оптимізувати, для покращення використання пам'яті або швидкості.
Для послідовних програм, профайлу зазвичай досить, але проблеми продуктивності в паралельних програмах (очікуючи повідомлень або проблем синхронізації) часто залежать від взаємозв'язку часу подій, тому вимагають повного запису, щоб зрозуміти проблему.
1.2 Аналіз існуючих методів та засобів профілювання
На даний момент існує доволі широкий спектр методів та засобів побудови профайлерів. Існують такі типи профайлерів:
За способом виводу:
Профайлери, які виводять список подій;
Профайлери, що будують граф викликів;
За способом збору даних:
Базуються, на подіях певної мови програмування. Мови Java, .NET, Python, Ruby мають вбудовані засоби профілювання;
Статистичні – здійснюють вибірку даних через певний інтервал. Наприклад: AMD Code Analyst, Apple Inc. Shark, Intel VTune;
Інтерпретаційні – вибірка даних здійснюється у потрібному місці коду
Інструментальні – модифікують програму при виконанні для збору даних. Наприклад gprof, Dynlnst, Valgrind, ATOM;
Супервізори – по-суті віртуальні машини, які імітують виконання програм і виконують профілювання: SIMMON, OLIVER.
Очевидно, що таке велике різноманіття типів профайлерів диктоване необхідністю ком...